#include<bits/stdc++.h>
using namespace std;
#define ll long long

int s,a,d,f,g,x[100001],ans1,ans2;
int c[100001][3];

inline int read(){
    int s=1;
    int a=0;
    char d=getchar();
    while(d<'0'||d>'9'){
        if(d=='-') s=-1;
        d=getchar();
    }
    while(d>='0'&&d<='9'){
        a=a*10+d-'0';
        d=getchar();
    }
    return a*s;
}

int main(){
    freopen("detect.in","r",stdin);
    freopen("detect.out","w",stdout);
    a=read();
    for(int i=1; i<=a;i++){
        bool A,B,C;
        A=B=C=true;
        s=read();
        d=read();
        f=read();
        g=read();
        for(int j=1;j<=s;j++){
            c[j][0]=read();
            c[j][1]=read();
            c[j][2]=read();
            if(c[j][2]!=0) A=false;
            if(c[j][2]<=0) B=false;
            if(c[j][2]>=0) C=false;
        }
        for(int j=1;j<=d;j++){
            x[j]=read();
        }
        sort(x+1,x+1+d);

        if(A==true){
            ans1=0;
            ans2=d-1;
            for(int j=1;j<=s;j++)
                if(c[j][1]>g&&c[j][0]<=x[d])ans1++;
            if(ans1==0)ans2++;
        }

        if(B==true){
            ans1=0;
            ans2=d-1;
            for(int j=1;j<=s;j++)
                if(c[j][0]<=x[d]){
                    if(c[j][1]>g) ans1++;
                    else{
                        int o=(c[j][1]*c[j][1]-2*(c[j][0]-x[d])*c[j][2]),p=sqrt(o);
                        if(p*p==o)
                            if(p>g)ans1++;
                        else
                            if(p>=g)ans1++;
                    }
                }
               
            if(ans1==0)ans2++;
        }

        cout<<ans1<<" "<<ans2<<endl;
    }
    return 0;
}










/*Compass(指南针)-Mili
  裴阔德号 船长        */